package com.jiuzhi.app.common.util;

import java.util.*;
import java.util.concurrent.ConcurrentHashMap;

/**
 * Created by moloch on 2017/9/11.
 */
public class New {

    /**
     * 生成HashMap
     */
    public static <K,V> Map<K,V> map(){
        return new HashMap<K,V>();
    }
    /**
     * 生成ConcurrentHashMap
     */
    public static <K,V> Map<K,V> cmap(){
        return new ConcurrentHashMap<K,V>();
    }
    /**
     * 生成HashMap，并将大小设为initSize
     */
    public static <K,V> Map<K,V> map(int initSize){
        return new HashMap<K,V>(initSize);
    }

    /**
     * 生成LinkedMap
     */
    public static <K,V> Map<K,V> lMap(){
        return new LinkedHashMap<K, V>();
    }
    /**
     * 生成LinkedMap，并将大小设为initSize
     */
    public static <K,V> Map<K,V> lMap(int initSize){
        return new LinkedHashMap<K, V>(initSize);
    }

    /**
     * 生成ArrayList
     */
    public static <T> List<T> list(){
        return new ArrayList<T>();
    }

    /**
     * 生成ArrayList，并将大小设为initSize
     */
    public static <T> List<T> list(int initSize){
        return new ArrayList<T>(initSize);
    }

    /**
     * 生成LinkedList
     */
    public static <T> LinkedList<T> lList(){
        return new LinkedList<T>();
    }

    /**
     * 生成HashSet
     */
    public static <T> Set<T> set(){
        return new HashSet<T>();
    }

    /**
     * 生成HashSet，并将大小设为initSize
     */
    public static <T> Set<T> set(int initSize){
        return new HashSet<T>(initSize);
    }

    /**
     * 生成有序的set集合
     * @param <T>
     * @return
     */
    public static <T> Set<T> lset(){
        return new LinkedHashSet<T>();
    }
    /**
     * 生成有序的set集合
     * @param <T>
     * @return
     */
    public static <T> Set<T> lset(int initSize){
        return new LinkedHashSet<T>(initSize);
    }

    /**
     * 生成Queue,其实也是LinkedList
     */
    public static <T> Queue<T> queue(){
        return new LinkedList<T>();
    }

}
